package com.link2room.soundwave.service;

import com.link2room.common.jpa.result.QueryResult;
import com.link2room.jetfire.dto.result.base.GcOrderCouponDto;
import com.link2room.jetfire.dto.result.base.ReservationBaseDto;
import com.link2room.jetfire.dto.result.base.ReservationPriceDto;
import yuheng.pms.result.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Created by sss on 2017/6/7.
 */

public interface IYhPmsBaseService {

    QueryResult<YhHotelInfoDto> getYhPmsHotelList(String lhotelGroupCode, String pmsHotelGroupCode, Integer currentPage,
                                                  Integer pageSize) throws Exception;

    QueryResult<YhRmtypeDto> getYhRmtypeList(String lhotelGroupCode, String pmsHotelGroupCode, String pmsHotelCode, Integer currentPage,
                                             Integer pageSize)throws Exception;

    List<YhRmtypeAvailDto> getYhRoomStockList(String lhotelGroupCode, String pmsHotelGroupCode, String pmsHotelCode, String pmsRmtype, String businessStart, String businessEnd)throws Exception;

    List<YhRmtypeAvailDto> getYhRoomStockListDirect(String lhotelGroupCode,
                                                    String pmsHotelGroupCode,
                                                    String pmsHotelCode,
                                                    String pmsRmtype,
                                                    String businessStart,
                                                    String businessEnd) throws Exception;

    boolean checkYhMemberOrderDouble(String lhotelGroupCode,
                                     String pmsHotelGroupCode,
                                     String pmsHotelCode,
                                     String pmsRmtype,
                                     String businessStart,
                                     String businessEnd,
                                     String cardNo
    ) throws Exception;

    YhOrderReturnDto orderYhReservation(String lhotelGroupCode,
                                        String pmsHotelGroupCode,
                                        String pmsHotelCode,
                                        String l2rNo, String pmsRmtype,
                                        ReservationBaseDto reservationBaseDto,
                                        List<ReservationPriceDto> reservationPriceDtos,
                                        GcOrderCouponDto gcOrderCouponDto)throws Exception;

    void cancelYhReservation(String lhotelGroupCode,
                             String pmsHotelGroupCode,
                             String pmsHotelCode,
                             String crsNo)throws Exception;

    List<YhReserveDto> queryYhReservation(String lhotelGroupCode,
                                          String pmsHotelGroupCode,
                                          String pmsHotelCode,
                                          String crsNo)throws Exception;

    void saveYhReservationPay(String lhotelGroupCode,
                              String pmsHotelGroupCode,
                              String pmsHotelCode,
                              String crsNo,
                              String paymentType,
                              String taCode,
                              BigDecimal amount)throws Exception;

    List<YhRmtypePriceDto> getYhRoomPriceList(String lhotelGroupCode,
                                              String pmsHotelGroupCode,
                                              String pmsHotelCode,
                                              String pmsRmtype,
                                              String rateCode,
                                              String businessStart,
                                              String businessEnd) throws Exception;

    Map<String,List<YhModifyDataDto>> getModifyData(String lhotelGroupCode,
                                                    String pmsHotelGroupCode,
                                                    String pmsHotelCode,
                                                    String modifyDate) throws Exception;
}
